package org.broncho.ccs;

/**
 * 计算任务定义
 * 
 * @author ZhangXiao
 * @time 2013年9月1日
 */
public class Task {

	/**
	 * 文件操作参数配置属性文件默认名称
	 */
	public static final String CCS_PROPERTIES = "ccs.Properties";
	/**
	 * 系统启动参数配置属性文件默认名称
	 */
	public static final String CCSLOG_PROPERTIES = "ccslog.Properties";
	/**
	 * 计算系统结果标识:<string>1<strong>表示显示
	 */
	public static final byte FLAGE_OP_Y = 1;
	/**
	 * 计算系统结果标识:<string>0<strong>表示不显示
	 */
	public static final byte FLAGE_OP_N = 0;
	/**
	 * 计算结果记录信息文件前缀
	 */
	public static final String FILE_NAME_PRE = "R";
	/**
	 * 计算结果图片信息文件前缀
	 */
	public static final String IMAGE_NAME_PRE = "I";
	/**
	 * 文件名称分割法
	 */
	public static final String SEPERATOR_CHAR = "_";
	/**
	 * 计算核心类中使用的关键参数
	 * 
	 * @see {@link org.broncho.ccs.Compute}
	 */
	public static final int MOD_VALUE = 2;
	/**
	 * 方格的边,即(N*N)中的N
	 */
	private int edge;

	/**
	 * 策略开始编号
	 */
	private int start;

	/**
	 * 策略结束编号
	 */
	private int end;

	/**
	 * 输出信息的文件
	 */
	private String rfile;

	/**
	 * 输出信息的图片
	 */
	private String image;

	/**
	 * 任务执行者
	 */
	private String provider;

	/**
	 * 任务提交时间
	 */
	private String protime;

	/**
	 * 任务花费时间
	 */
	private String wastetime;

	/**
	 * 任务执行状况
	 */
	private boolean result = false;

	public Task(int edge, int start, int end, String provider) {
		this.edge = edge;
		this.start = start;
		int max;
		this.end = ((max = (int) Math.pow(MOD_VALUE, edge)) < end) ? max : end;
		this.provider = provider;
		this.rfile = FILE_NAME_PRE + SEPERATOR_CHAR + this.edge;
	}

	public int getEdge() {
		return edge;
	}

	public void setEdge(int edge) {
		this.edge = edge;
	}

	public int getStart() {
		return start;
	}

	public void setStart(int start) {
		this.start = start;
	}

	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

	public String getRfile() {
		return rfile;
	}

	public void setRfile(String rfile) {
		this.rfile = rfile;
	}

	public String getImage() {
		return image;
	}

	public void setImage(String image) {
		this.image = IMAGE_NAME_PRE + SEPERATOR_CHAR + this.edge
				+ SEPERATOR_CHAR + image;
	}

	public String getProvider() {
		return provider;
	}

	public void setProvider(String provider) {
		this.provider = provider;
	}

	public String getProtime() {
		return protime;
	}

	public void setProtime(String protime) {
		this.protime = protime;
	}

	public String getWastetime() {
		return wastetime;
	}

	public void setWastetime(String wastetime) {
		this.wastetime = wastetime;
	}

	public boolean isResult() {
		return result;
	}

	public void setResult(boolean result) {
		this.result = result;
	}
}
